

loop->anfds
ANFD * anfds;
//anfds 数组来存所有 fd 信息的结构体，然后以 fd 值为索引直接找到对应的结构体
typedef struct
{
  ev_watcher_list* head; //同一个 fd 上的所有 ev_watcher 事件
  unsigned char events; //所有 ev_watcher->events 的或集
  unsigned char reify; //默认值为 0，当调用 ev_io_start 后，reify 会被设置为 `w->events & EV__IOFDSET | EV_ANFD_REIFY`。
                       //如果 reify 未被设置，则把 fd 添加到 fdchanges 中去
  unsigned char emask; /* the epoll backend stores the actual kernel mask in here */
  unsigned char unused;
  unsigned int egen;  /* generation counter to counter epoll bugs */
} ANFD;

//由 fd 组成的一维数组 存储需要交给 epoll 监听的 fd
//交给epoll_modify处理 epoll_ctl
//ev_io_stop ev_io_start fd_reify(epoll_ctl) 
loop->fdchanges
int * fdchanges;


//存储待处理的 watcher 这是一个二维数组 第一个维度的索引是
//priority 表示事件的优先级（普通用法不需要关注） 第二个维度的索引被记录在
//watcher->pending 方便定位
loop->pendings
ANPENDING *pendings [((((0x7f) & 4) ? +2 : 0) - (((0x7f) & 4) ? -2 : 0) + 1)];
//其第一维是优先级，第二维是动态分配的，存放具体事件
ANPENDING *pendings [5];
// 存储已准备好的 watcher，等待回调函数被调用
typedef struct
{
  ev_watcher* w;
  int events; /* the pending event set for the given watcher */
} ANPENDING;


